package com.weijin.utils;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.Objects;

/**
 * @Author WeiJin
 * @Version 1.0
 * @Date 2025/3/13 11:34
 */
public class DateTimeUtil {
    private DateTimeUtil() {
    }

    private static final String format = "yyyy-MM-dd HH:mm:ss";

    /**
     * 获取当前时间 使用yyyy-MM-dd HH:mm:ss格式
     *
     * @return 返回当前时间
     */
    public static LocalDateTime getDateTime() {
        return LocalDateTime.parse(datetimeToStr(LocalDateTime.now()), DateTimeFormatter.ofPattern(format));
    }

    /**
     * 把字符串时间日期转为LocalDateTime格式
     *
     * @param dateTime 需要转换的字符串
     * @return 返回LocalDateTime格式
     */
    public static String datetimeToStr(LocalDateTime dateTime) {
        return DateTimeFormatter.ofPattern(format).format(dateTime);
    }

    /**
     * 两个时间相差几天
     *
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return 相差天数
     */
    public static long daysBetween(LocalDateTime startTime, LocalDateTime endTime) {
        long days = ChronoUnit.DAYS.between(startTime.toLocalDate(), endTime.toLocalDate());
        //同一天直接返回1天
        if (Objects.equals(startTime.toLocalDate(), endTime.toLocalDate())) {
            if (!startTime.toLocalTime().isBefore(endTime.toLocalTime())) {
                days = 1;
            }

        } else if (startTime.toLocalDate().isBefore(endTime.toLocalDate()) &&
                (!startTime.toLocalTime().equals(endTime.toLocalTime()))) {
            days++;

        }
        return days;
    }
}
